import router from '@/router/index'
// 进度条相关的包和样式
import { NProgress } from 'nprogress-v2'
// 此处还修改了引入的样式文件；需要重启服务才能生效
import 'nprogress-v2/dist/index.css'
import pinia from './store'
import useUserStore from '@/store/modules/user'

// 取消进度条右上角的转圈圈
NProgress.configure({ showSpinner: false })
// 由于当前代码执行环境不在组件中，所以需要引入大仓库才能访问到数据
// ！！！！其实也可以将 const userStore = useUserStore() 放在方法beforeEach内
const userStore = useUserStore(pinia)

// 全局守卫：任意路由切换，都会触发的钩子函数
// 前置守卫
router.beforeEach((to, from, next) => {
  // 任意路由切换实现进度条
  NProgress.start()
  if (userStore.token.token) {
    // 用户已登录
    if (to.path == '/login') {
      // 登录后如果再访问登录页，让其跳转到首页
      next('/')
    } else {
      // 路由放行的函数
      next()
    }
  } else {
    // 用户未登录
    if (to.path == '/login') {
      next()
    } else {
      next({ path: '/login', query: { redirect: to.path } })
    }
  }
})
// 后置守卫
router.afterEach((to, from, failure) => {
  // 更改浏览器的标题
  document.title = (to.meta as { title?: string }).title || '默认标题'
  NProgress.done()
})
